package com.dms.modules.message.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.dms.modules.message.dto.ChatMessageDTO;
import com.dms.modules.message.entity.ChatMessage;
import com.dms.modules.message.vo.ChatContactVO;

public interface ChatService extends IService<ChatMessage> {
    
    /**
     * 发送私聊消息
     * @param senderId 发送者ID
     * @param messageDTO 消息内容
     * @return 消息ID
     */
    Long sendMessage(Long senderId, ChatMessageDTO messageDTO);
    
    /**
     * 获取与指定用户的聊天记录
     * @param userId 当前用户ID
     * @param targetUserId 目标用户ID
     * @param page 分页参数
     * @return 聊天记录
     */
    IPage<ChatMessage> getChatHistory(Long userId, Long targetUserId, Page<ChatMessage> page);
    
    /**
     * 标记消息为已读
     * @param receiverId 接收者ID
     * @param senderId 发送者ID
     */
    void markAsRead(Long receiverId, Long senderId);
    
    /**
     * 获取未读消息数
     * @param userId 用户ID
     * @return 未读消息数
     */
    int getUnreadCount(Long userId);

    /**
     * 获取聊天对象列表
     * @param userId 当前用户ID
     * @param page 分页参数
     * @return 聊天对象列表，包含最新消息和未读消息数
     */
    IPage<ChatContactVO> getChatContacts(Long userId, Page<ChatContactVO> page);
} 